Jak pridat v runtime pocitany sloupecek do komponenty TIBQuery
Otázka od: Tomas Krejzek
25. 10. 2004 13:02
Ahoj, pokousim se pridat do TIBQuery calculated sloupecek, bohuzel se to
stale nedari, vytvorim si objekt TStringField, nastavim jej(jmeno,
velikost, ze je calculated) a pridam do Query pomoci metody Add
vlastnosti Fields.
Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.
Diky moc, Tomas
Odpovedá: Ludek Finstrle
25. 10. 2004 13:30
> Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
> prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
> ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
> odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.
Zkus to pres DataSet.FieldDefs.Add (ci jak se to presne jmenuje) a teprve
po teto definici provest DataSet.Open.
Zkratka trochu si s tim pohraj. Je to tak na 2-3 hodinky max a aspon trochu
pochopis, jak to vlastne funguje.
Luf
Odpovedá: Tomas Krejzek
25. 10. 2004 14:18
Hmmm, to jsem delal cely dopoledne
tedy ja to delal pres
IBQuery->FieldDefs->AddFieldDef
bohuzel to nefungovalo, a pozdejs jsem si v helpu precetl ze to ma
vyznam pouze kdyz vytvaris databazi, jinak je to k prdu.
Pravda nezkousel jsem zavrit a otevrit dataset, bohuzel netusim jak se k
nemu dostanu, snad jen v TIBDatabase je objekt DataSet.
Ale dik moc.
Tom
Ludek Finstrle napsal(a):
>>Ale kdyz spustim program, tak to vyhuci s chybou ze 'FName' nema
>>prirazeny DataSet, za behu priradit nejde, jak napovida napoveda, pise
>>ze by se mel pripojit automaticky kdyz se vytvori objekt TFieldDef pro
>>odpovidajici sloupecek, i toto jsem zkusil, vysledek bohuzel zase nulovy.
>>
>>
>
>Zkus to pres DataSet.FieldDefs.Add (ci jak se to presne jmenuje) a teprve
>po teto definici provest DataSet.Open.
>Zkratka trochu si s tim pohraj. Je to tak na 2-3 hodinky max a aspon trochu
>pochopis, jak to vlastne funguje.
>
>Luf
>
>
>
>
>
>
Odpovedá: Lauko Stefan
25. 10. 2004 17:57
Ahoj,
var
F:TField;
begin
IBQuery1.Open;
IBQuery1.Close;
F:= DefaultFieldClasses[ftString].Create(IBQuery1.Owner);
F.FieldName:='xxx';
F.Name:= 'yyyy';
F.Size:= 20;
F.FieldKind:=fkCalculated;
F.DataSet:= IBQuery1;
IBQuery1.Open;
end;
Lauko
Odpovedá: Tomas Krejzek
26. 10. 2004 8:20
Ahojda
Moc moc dik, ja to pisu v C++ builderu, takze je to trosku jinak:
DB_4QueryFName = new TStringField((TComponent *) DB_4Query);
DB_4QueryFName->FieldName = "FNAME";
DB_4QueryFName->DisplayLabel = "FName";
DB_4QueryFName->FieldKind = fkCalculated;
DB_4QueryFName->Size = 30;
DB_4QueryFName->DataSet = DB_4Query;
to kdyby nahodou mel nekdo podobny problem jako ja
Tomas
Lauko Stefan napsal(a):
>Ahoj,
>
>var
> F:TField;
>begin
>IBQuery1.Open;
>IBQuery1.Close;
>F:= DefaultFieldClasses[ftString].Create(IBQuery1.Owner);
>F.FieldName:='xxx';
>F.Name:= 'yyyy';
>F.Size:= 20;
>F.FieldKind:=fkCalculated;
>F.DataSet:= IBQuery1;
>IBQuery1.Open;
>end;
>
>
>
>
>
>Lauko
>
>
>
>
>
>
>